package per.qiao.simplerest.returenvalue;

import org.springframework.lang.Nullable;

/**
 * Company: 上海数惠系统技术有限公司
 * Department: 数据中心
 * Date: 2020-06-01 16:21
 *
 * @Author: qyp
 * Email: qiaoyp@dist.com.cn
 * Desc:
 */
public interface ReturnValueHandler {

    /**
     * 判断返回值处理器是否支持该类型
     * @param returnValue
     * @return
     */
    boolean support(Object returnValue);

    /**
     * 处理返回值
     * @param returnValue   返回值
     * @param returnType    返回类型
     * @param genericType   泛型类型
     * @return
     */
    <T, G> T handle(Object returnValue, @Nullable Class<T> returnType, @Nullable Class<G> genericType);
}
